Oracle war lange ein Verfechter der Idee von „In-line Views“, wobei eine Unterabfrage innerhalb der FROM-Klausel platziert werden kann, praktisch so, als wäre sie der Name einer Tabelle. Hier ein Beispiel für eine Oracle-Abfrage, die den Speicherplatz der einzelnen Tabellen anzeigt (Listing A).
Listing B zeigt das Ergebnis dieser In-line View-Abfrage gegen das Datenverzeichnis.
Im Beispiel-Listing A sind die SQL-Unterabfragen innerhalb der FROM-Klausel platziert, und es werden ihnen die Aliase df und fs zugewiesen. Auf die Werte der df- und fs-Unterabfragen wird dann innerhalb der SELECT-Klausel zugegriffen. Wenn man sich diese Abfrage genauer anschaut, sieht man, dass sie zwei Bereiche von Werten aus zwei Tabellen addiert und vergleicht, und das alles in einer einzigen Abfrage. Einigen Lesern dürfte eine SQL-Abfrage innerhalb der FROM-Klausel recht merkwürdig vorkommen, aber das ist noch nichts im Vergleich zu skalaren Unterabfragen! Eine skalare Unterabfrage geht weit über die In-line Views hinaus, wobei SQL-Unterabfragen innerhalb der SELECT-Klausel platziert werden können. Lassen Sie uns einige Beispiele betrachten.
Beispiele für skalare Unterabfragen
Wenn man sich erst einmal mit der Syntax vertraut gemacht hat, wird man feststellen, dass skalare Unterabfragen sehr leistungsfähig sind. Skalare Unterabfragen sind besonders nützlich für die Zusammenfassung mehrere Abfragen zu einer einzigen. Listing C verwendet skalare Unterabfragen zur Berechnung unterschiedlicher Arten von Gruppenfunktionen (max und avg), alles mit einem einzigen SQL-Ausdruck. Beachten Sie, dass diese Abfrage sowohl skalare Unterabfragen als auch In-line Views verwendet.
Skalare Unterabfragen sind ebenfalls nützlich, wenn man Werte in Tabellen einfügen will, die auf Werten aus anderen Tabellen basieren. In Listing D verwenden wir eine skalare Unterabfrage, um den maximalen Kreditrahmen für BILL zu berechnen und diesen Wert in die Tabelle max_credit einzufügen.
Die skalare Unterabfrage in Listing D ist sehr nützlich für Oracle Data Warehouse-Anwendungen. In einem Oracle Data Warehouse ist es üblich, dass der DBA bestimmte Werte schon im Vorfeld mithilfe von Gruppenfunktionen zusammenfasst, um die Abfrage-Geschwindigkeit zu erhöhen. Skalare Unterabfragen sind ein leistungsfähiger Helfer bei dieser Aufgabe. In Listing E füllen wir die Tabelle emp_salary_summary mit vielen Arten von zusammengefassten Werten aus den zugrunde liegenden Tabellen.
Neueste Kommentare
Noch keine Kommentare zu Skalare Unterabfragen vereinfachen komplexe SQL-Ausdrücke
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.